package com.atguigu.lease.common.minio;

import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author GQS @Date 2024/8/30/13:54
 * @Description Minio配置类 返回MinioClient实例
 */
// 配置类，用于配置Minio客户端的相关设置
@Configuration
// 启用Minio属性配置
@EnableConfigurationProperties(MinioProperties.class)
// 当配置文件中存在minio.endpoint属性时，加载此配置类
@ConditionalOnProperty(name = "minio.endpoint")
public class MinioConfiguration {

  // 自动注入Minio属性类，用于获取Minio配置信息
  @Autowired private MinioProperties properties;

  // 定义一个MinioClient的Bean，供Spring管理
  @Bean
  public MinioClient minioClient() {
    // 根据配置信息构建MinioClient实例
    return MinioClient.builder()
        .endpoint(properties.getEndpoint()) // 设置Minio服务端地址
        .credentials(properties.getAccessKey(), properties.getSecretKey()) // 设置访问凭证
        .build();
  }
}


